

#ifndef _TRIANGULO_H

#define _TRIANGULO_H

#include <iostream>
#include "Elemento_Visual.h"
#include "Vertice.h"
#include "Indice.h"
#include "EcuacionPlano.h"

using namespace::std;

class Triangulo : Elemento_Visual
{
public:
    //Constructores
    Triangulo(Vertice *v1, Vertice *v2, Vertice *v3);
    Triangulo();
    Triangulo(const Triangulo &t);
    //Propiedades
    void setVertice1(Vertice* One){v1 = One;}
    void setVertice2(Vertice* Two){v2 = Two;}
    void setVertice3(Vertice* Three){v3 = Three;}

    Vertice* getVertice1() {return v1;}//REF esto debe cambiar
    Vertice* getVertice2() {return v2;}//REF esto debe cambiar
    Vertice* getVertice3() {return v3;}//REF esto debe cambiar

    Indice getIndice(){return I;}
    void setIndice(Indice& i){I = i;}
	int getOneIndice(int pos);

    void setID(int valor){ID = valor;}
    int getID(){return ID;}

    Vector getNormal1(){return vNormal1;}
    Vector getNormal2(){return vNormal2;}

	EcuacionPlano getPlano(){return ecPlano;}

	void setVisible(bool value){blnvisible = value;}
	bool getVisible(){return blnvisible;}


	void setVecinos(vector<int> value){vVecinos = value;}
	void setOneVecino(int value,int pos){vVecinos[pos] = value;}
	vector<int> getVecinos(){return vVecinos;}
	int getOneVecino(int pos){return vVecinos[pos];}


    //Metodos
    void CalcularNormal();
	void CalcularEcuacionPlano();
	void IncializarVecinos();

private:
    //Atributos
    Vertice *v1;
    Vertice *v2;
    Vertice *v3;

    Vector vNormal1;
    Vector vNormal2;

	EcuacionPlano ecPlano;

    Indice I;
    int ID;
	bool blnvisible;
	vector<int> vVecinos;
};



#endif

